home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / misc / AWNP_2-39.lha / AWNP / AWNP-Docs / Demos / CacheControl.awebrx < prev    next >
Text File  |  1999-10-17  |  11KB  |  394 lines

  1. /*
  2. $VER: CacheControl.awebrx 1.4 (30.9.99)
  3. Additional Cache Controls for AWeb 3.x
  4. By William H. M Parker <bill@amitrix.com>
  5. 26 Sep 1999
  6. DO NOT ALTER THIS FILE!
  7. Patterned deletes are used !
  8. */
  9.  
  10.  
  11. options results
  12. ports = show('P')
  13. parse var ports dummy 'AWEB.' portnr .
  14. address value 'AWEB.' || portnr
  15. 'GET ACTIVEPORT '
  16. awebhost=result
  17. address value awebhost
  18. 'get screen var screen'
  19. parse source . . called .
  20. c_dir=path(called)
  21. savewindow=''
  22. call startup()
  23. call main()
  24. exit
  25.  startup:
  26. envname='aweb3/cachecontrol'
  27. abouttx='Cache Control for AWeb-II 3.x*nVers 1.4*nAuthor William Parker*nGUI by AWNPipe:'
  28. parse arg url
  29. percent=75
  30. days=21
  31. call names()
  32. tsite=site.0
  33. call buildgui()
  34. call cachepeek()
  35. return
  36.  main:
  37. do while ~eof(ca)
  38.   call topipe('con')
  39.   in=readln(ca)
  40.   /*say in*/
  41.   parse var in in1 in2 in3 in4 in5 .
  42.   if in1='gadget' then do
  43.     call topipe('id 0 s 256')
  44.     call gadgets()
  45.     call topipe('id 0 s 512')
  46.   end
  47.   if in1='menu' then call menu()
  48.   if in1='close' then exit
  49. end
  50. return()
  51.  gadgets:
  52. if in2=pageid then return()
  53.  if in2=reduceid then do
  54.   'getcfg cachedisk var cachesize'
  55.   if rc~=0 then exit
  56.   newsize=trunc((cachesize*(percent+1))/100,0)
  57.   'setcfg cachedisk 'newsize
  58.   'setcfg cachedisk 'cachesize
  59.   return()
  60. end
  61.  if in2=percentid then do
  62.   percent=in3
  63.   return()
  64. end
  65.  if in2=daysid then do
  66.   days=in3
  67.   return()
  68. end
  69.  if in2=expireid then do
  70.   'getcfg cachepath var cachepath'
  71.   parse value date('N',date('I')-days,'I') with d1 d2 d3
  72.   xdate=d1'-'d2'-'right(d3,2)
  73.   if askabort() then return()
  74.   address command 'list "'cachepath'" upto 'xdate' pat ~(awcr|awcu|awck) files all lformat "delete %p%n quiet" >t:cctemp'
  75.   address command 'execute t:cctemp'
  76.   address command 'delete t:cctemp quiet'
  77.   'fixcache force'
  78.   return()
  79. end
  80.  if in2=newurlid then do
  81.   call writeln(ca,'id 0 read')
  82.   windowr=readln(ca)
  83.   parse var windowr wl wt ww wh .
  84.   if (datatype(wt,N) &datatype(wl,N) &datatype(ww,N) & datatype(wh,N) ) then do
  85.     savewindow='top' wt 'left' wl 'width' ww 'height' wh
  86.   end
  87.   call close(ca)
  88.   call startup()
  89.   call topipe('id 0 s 256');
  90.   return()
  91. end
  92.  if in2=urlid then do
  93.   tsite=site.in3
  94.   if tsite='' then call writeln(ca,'id 'siteid' dis 1 ')
  95.   else call writeln(ca,'id 'siteid' dis 0 ')
  96.   call readln(ca)
  97.   call writeln(ca,'id 'urlloid' ref page 'pageid)
  98.   call readln(ca)
  99. end
  100.   if in2=removeid then do
  101.   n.curnode.value=''
  102.   'setcfg nocache stem n'
  103. end
  104.  if in2=saveid then do
  105.   'savesettings'
  106.   n.curnode.value=''
  107. end
  108.  if in2=editid then do
  109.   if editgad(n.curnode.value) then do
  110.     n.curnode.value=newname
  111.     'setcfg nocache stem n'
  112.   end
  113. end
  114.  if in2=newid then do
  115.   if editgad('') then do
  116.     n.curnode.value=newname
  117.     'setcfg nocache add 'newname
  118.   end
  119. end
  120.  if in2=globalid then do
  121.   if global~=in3 then do
  122.     if global >0 then do
  123.       if co>0 then n.co.value=''
  124.       if io>0 then n.io.value=''
  125.       if oci>0 then  n.oci.value=''
  126.       'setcfg nocache stem n'
  127.     end
  128.      if in3=1 then 'setcfg nocache #?.(jpg|jpeg|gif|png|iff) add'
  129.     else if in3=2 then 'setcfg nocache ~(#?.(jpg|jpeg|gif|png|iff)) add'
  130.     else if in3=3 then 'setcfg nocache #? add'
  131.    end
  132. end
  133.  if in2=siteid then do
  134.   if sitem~=in3 then do
  135.     if sitem>0 then  do
  136.       if sco>0 then n.sco.value=''
  137.       if sio>0 then n.sio.value=''
  138.       if sip>0 then  n.sip.value=''
  139.       'setcfg nocache stem n'
  140.     end
  141.      if in3=1 then 'setcfg nocache 'tsite'#?.(jpg|jpeg|gif|png|iff) add'
  142.     else if in3=2 then 'setcfg nocache 'tsite'~(#?.(jpg|jpeg|gif|png|iff)) add'
  143.     else if in3=3 then 'setcfg nocache 'tsite'#? add'
  144.    end
  145. end
  146.  if in2=lbid then do
  147.   curnode=refnum.in5
  148. end
  149.  else call cachepeek()
  150. return()
  151.  menu:
  152. if in2=0 then do
  153.   if in3=0 then do
  154.     if in4=0 then call setenvarc()
  155.     if in4=1 then call unsetenvarc()
  156.   end
  157.   if in3=1 then 'open file:///'c_dir'CacheControl_doc.html'
  158.   if in3=2 then call showtx(500,abouttx)
  159.   if in3=3 then  exit
  160. end
  161. return()
  162.  names:
  163. a=0
  164. if url='' then 'get url var url'
  165. parse var url u1'://' u2 '/'
  166. root=u1'://'
  167. site=u2'/'
  168. sitel=site'|'
  169. site.a=site
  170. a=a+1
  171. if length(site)<2 then do
  172.   a=0
  173.   sitel=""
  174. end
  175. do while 1
  176.   key=root||site
  177.   parse var url u1 (key) u2 '/' u3
  178.   site=site||u2'/'
  179.   site=strip(right(site,50))
  180.   if u3='' then do
  181.     site=substr(url,length(root)+1)
  182.     site=strip(right(site,40))
  183.     sitel=sitel||site'|'
  184.     site.a=site
  185.     a=a+1
  186.     site.a=''
  187.     if sitel='|' then sitel=''
  188.     sitel=sitel'**Show All settings**'
  189.     a=a+1
  190.     return
  191.   end
  192.   sitel=sitel||site'|'
  193.   site.a=site
  194.   a=a+1
  195. end
  196. return()
  197.  buildgui:
  198. call getenv()
  199. if savewindow~='' then window=savewindow
  200. chtxt="Full Caching On|Do Not Cache images|Cache Only Images|Disable All Caching"
  201. call open(ca,'awnpipe:/xc')
  202. call topipe('a defg "Cache Control" v so  si ps 'screen' m 'window)
  203. pageid=topipe('clicktab ctl "Control|Maintenance"')
  204.  call topipe('layout v b 0 page 'pageid)
  205.  call topipe('layout gt "Global" v so  si weih 0')
  206. globalid=topipe('RadioButton rl "'chtxt'"')
  207. call topipe('le')
  208.  urlloid=topipe('layout  gt "This Site" v   so  si weih 0')
  209. call topipe('layout b 0  si so')
  210. newurlid=topipe('button gt N weiw 0 close')
  211. urlid=topipe('chooser  pu cl "'sitel'" ')
  212. call topipe('le')
  213. siteid=topipe('RadioButton rl "'chtxt'"')
  214. call topipe('le')
  215.  call topipe('layout  gt "Current Settings" v   so  si')
  216. lbid=topipe('listbrowser arrows minh 50')
  217. call topipe('layout b 0 weih 0')
  218. editid=topipe('button gt " Edit "')
  219. removeid=topipe('button gt " Remove "')
  220. newid=topipe('button gt " New "')
  221. saveid=topipe('button gt " Save "')
  222. call topipe('le')
  223. call topipe('le')
  224. call topipe('le')
  225.  call topipe('layout cj si v b 0 page ' pageid)
  226. call topipe('label gt "*nThe Expire function calls*nfix cache. It will delete all non*ncache files from your cache drawer.*n "')
  227. call topipe('layout v si sw cj')
  228. call topipe('label gt "Expire all files more than"')
  229. call topipe('layout b 0 sw weiw 0')
  230. daysid=topipe('integer defn 'days' minn 1 arrows weiw 0')
  231. call topipe('label gt " Days old. "')
  232. call topipe('le')
  233. expireid=topipe('button weiw 0 gt "   Expire Cache Files   "')
  234. call topipe('le')
  235.  call topipe('space')
  236.  call topipe('layout v si sw cj')
  237. call topipe('label gt "Reduce cache level to"')
  238. call topipe('layout b 0 sw weiw 0')
  239. percentid=topipe('integer defn 'percent' minn 1 maxn 99 arrows weiw 0')
  240. call topipe('label gt "  % full. "')
  241. call topipe('le')
  242. reduceid=topipe('button weiw 0 gt "   Reduce Cache Level   "')
  243. call topipe('le')
  244. call topipe('label gt "*n *nThe cache maintenance functions can*n take several minutes to complete.*n "')
  245.  call topipe('le')
  246. men0gad= topipe('Menu gt "Project|Window|$@SSnapshot|$@UUnsnapshot|@DCacheControl Docs|@?About|@QQuit"')
  247. call topipe('open')
  248. if sitel='**Show All settings**' then do
  249.   call topipe('id 'siteid' dis 1 ')
  250. end
  251. return(0)
  252.  cachepeek:
  253. curnode=0
  254. call topipe('id 'lbid' s 0 page 'pageid)
  255. call topipe('id 'lbid' removenode page ' pageid)
  256. 'getcfg nocache stem n'
  257. n.0.value=''
  258. co=0;io=0;sco=0;sio=0;sip=0;oci=0
  259. do i=1 for n.0
  260.    if n.i.value='#?' then co=addnode(i)
  261.   else if n.i.value='#?.(jpg|jpeg|gif|png|iff)' then io=addnode(i)
  262.   else if n.i.value='~(#?.(jpg|jpeg|gif|png|iff))' then oci=addnode(i)
  263.   else if (left(n.i.value,length(tsite))=tsite) then do
  264.     call addnode(i)
  265.     if n.i.value=tsite'#?' then sco=i
  266.     if n.i.value=tsite'#?.(jpg|jpeg|gif|png|iff)' then sio=i
  267.     if n.i.value=tsite'~(#?.(jpg|jpeg|gif|png|iff))' then sip=i
  268.   end
  269. end
  270. if (co>0) then global=3
  271. else if (io>0) then global=1
  272. else if (oci>0) then global=2
  273. else global=0
  274. call topipe('id 'globalid' s 'global 'ref page 'pageid)
  275. if (sco>0) then sitem=3
  276. else if (sio>0) then sitem=1
  277. else if (sip>0) then sitem=2
  278. else sitem=0
  279. call topipe('id 'siteid' s 'sitem 'ref page 'pageid)
  280.  return
  281.  addnode:
  282. call topipe('sc ¾')
  283. nodeid=topipe('id 'lbid' addnode gt "'n.i.value'" page 'pageid)
  284. reftxt.nodeid=n.i.value
  285. refnum.nodeid=i
  286. return(i)
  287.  editgad:
  288. newname=''
  289. call open(ca2,'awnpipe:1/xc')
  290. call writeln(ca2,'"Edit Cache Setting" fh so ps 'screen' defaultgadgets m a')
  291. call readln(ca2)
  292. call writeln(ca2,'layout so v  minw 300')
  293. call readln(ca2)
  294. call writeln(ca2,'string lj gt "'arg(1)'" weih 0 maxchar 255')
  295. parse value readln(ca2) with . namegad .
  296.  call writeln(ca2,'layout so   weih 0 b 0');call readln(ca2)
  297.  call writeln(ca2,'Button gt O.K.  weih 0  close')
  298. parse value readln(ca2) with . okgad .
  299. call writeln(ca2,'Button gt Cancel  weih 0  close')
  300. parse value readln(ca2) with . cancelgad .
  301. call writeln(ca2,'le ');call readln(ca2)
  302.  call writeln(ca2,'le ');call readln(ca2)
  303. call writeln(ca2,'open ');call readln(ca2)
  304. do while ~eof(ca2)
  305.   call writeln(ca2,'continue')
  306.   call readln(ca2)
  307.   parse value readln(ca2) with t tin tin2
  308.   if t='close' then break
  309.   if tin=namegad then newname=strip(tin2)
  310. end
  311. call close(ca2)
  312. if tin=okgad then  return(1)
  313. else return(0)
  314. return
  315.  topipe:
  316. parse arg out
  317. call writeln(ca,out)
  318. res=readln(ca)
  319. parse var res res1 res2 res3
  320. if res1='ok' then return(res2)
  321. say 'error from: 'out
  322. say '  responce: ' in
  323. exit
  324.  getenv:
  325. if(open(env,'env:'envname,'R')) then do
  326.   windows=readln(env)
  327.   days=readln(env)
  328.   if ~datatype(days,N) then days=21
  329.   percent=readln(env)
  330.   if ~datatype(percent,N) then percent=75
  331.   call close(env)
  332.   parse var windows wl wt ww wh .
  333.   window= 'top' wt 'left' wl 'width' ww 'height' wh
  334. end
  335. else window='tl width 400 height 200'
  336. return
  337.  setenv:
  338. call writeln(ca,'id 0 read')
  339. windowr=readln(ca)
  340. parse var windowr wl wt ww wh .
  341. if (datatype(wt,N) &datatype(wl,N) &datatype(ww,N) & datatype(wh,N) ) then do
  342.   call open(env,'env:'envname,'W')
  343.   call writeln(env,windowr)
  344.   call writeln(env,days)
  345.   call writeln(env,percent)
  346.   call close(env)
  347. end
  348. return(0)
  349.  setenvarc:
  350. call setenv()
  351. address command 'copy env:'envname' envarc:'envname '>nil:'
  352. return
  353.  unsetenvarc:
  354. call setenv()
  355. if exists('envarc:'envname) then delete('envarc:'envname)
  356. if exists('env:'envname) then delete('env:'envname)
  357. return
  358.  showtx:
  359. call open(ptx,'awnpipe:tbtxt/xc')
  360. call writeln(ptx,'ps 'screen' db dg Information q cg m a so si ')
  361. call writeln(ptx,'label gt "'arg(2)'"')
  362. call writeln(ptx,'open')
  363. if arg(1)=0 then call writeln(ptx,'m')
  364. else call writeln(ptx,'tick 'arg(1))
  365. call close(ptx)
  366. return(0)
  367.  askabort:
  368. tin=''
  369. call open(ca2,'awnpipe:1/xc')
  370. call writeln(ca2,'"Cache Expire DELETE " ps 'screen' db cg dg v a')
  371. call readln(ca2)
  372. call writeln(ca2,'label gt "DELETE files from*n'cachepath'*n Created 'xdate' or earlier ? "')
  373. call readln(ca2)
  374. call writeln(ca2,'layout so ')
  375. call readln(ca2)
  376. call writeln(ca2,'button gt "DELETE FILES" close')
  377. parse value readln(ca2) with . deletegad .
  378. call writeln(ca2,'button gt "Abort" close')
  379. parse value readln(ca2) with . abortgad .
  380. call writeln(ca2,'le')
  381. call readln(ca2)
  382. call writeln(ca2,'open ');call readln(ca2)
  383. parse value readln(ca2) with t tin tin2
  384. close(ca2)
  385. if tin=deletegad then return(0)
  386. return(1);
  387.  path:
  388. parse arg pathf
  389. dir_pos = max(lastpos('/',pathf),lastpos(':',pathf))
  390. if dir_pos > 0 then return(left(pathf,dir_pos))
  391. else return('')
  392.  
  393.  
  394.